package nl.scalasim

/** Base class for all messages in scalasim. */
sealed abstract class Message

/** Ask a producer to produce goods. */
case class Produce extends Message

/** Inform a Harvester goods have been produced. */
case class Produced(name: String, amount: Int) extends Message

/** Ask an actor to stop running. */
case class Stop extends Message

/** Ask a Harvester to harvest goods. */
case class Harvest extends Message

/** Inform a Citizen that goods have been produced. */
case class Harvested(name: String, amount: Int) extends Message

/** Give any actor in the simulation the chance to do something. */
case class Act extends Message

/** Message indicating that the current actor is working. */
case class Working extends Message

/** Message indicating that the current actor is idle. */
case class Idle extends Message